﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//写一个函数打印arr数组的内容，不使用数组下标，使用指针。
//arr是一个整形一维数组。
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = arr;
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	return 0;
//}

//实现一个对整形数组的冒泡排序
//void Display_arr(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//
//void Maopao_paixue(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz - 1; i++)
//	{
//		int j = 0;
//		int flag = 1;
//		for (j = 0; j < sz - 1 - i; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//				flag = 0;
//			}
//		}
//		if (flag == 1)
//		{
//			break;
//		}
//	}
//}
//int main()
//{
//	int arr[10] = { 9,8,7,6,5,4,3,1,2,0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	Display_arr(arr, sz);
//	printf("\n");
//	Maopao_paixue(arr, sz);
//	Display_arr(arr,sz);
//	return 0;
//}


//写一个函数，判断一个字符串是否为另外一个字符串旋转之后的字符串。
//例如：给定s1 = AABCD和s2 = BCDAA，返回1
//给定s1 = abcd和s2 = ACBD，返回0.
//AABCD左旋一个字符得到ABCDA
//AABCD左旋两个字符得到BCDAA
//AABCD右旋一个字符得到DAABC

//#include <string.h>
//int Turn_char(char arr1[], char arr2[], int sz)
//{
//	int i = 0;
//	int c = 0;
//	if (strcmp(arr1, arr2) == 0)
//	{
//		c = 1;
//		return c;
//	}
//	for (i = 0; i < sz - 1;i++)
//	{
//		int j = 0;
//		for (j = 0; j < sz - 1; j++)
//		{
//			char tem = arr1[j];
//			arr1[j] = arr1[j + 1];
//			arr1[j + 1] = tem;
//		}
//		if (strcmp(arr1, arr2) == 0)
//		{
//			c = 1;
//			break;
//		}
//	}
//	return c;
//}
//
//int main()
//{
//	char arr1[5] = "ABCD";
//	char arr2[5] = "CDAB";
//	int sz = strlen(arr1);
//	int c = Turn_char(arr1, arr2, sz);
//	if (c == 0)
//	{
//		printf("arr1左右旋不能得到arr2");
//	}
//	else
//	{
//		printf("arr1左右旋能得到arr2");
//
//	}
//	return 0;
//}


//有一个数字矩阵，矩阵的每行从左到右是递增的，矩阵从上到下是递增的，请编写程序在这样的矩阵中查找某个数字是否存在。
//void Cheak_arr(int arr[][3], int sz, int num)
//{
//	int i = 0;
//	int n = 0;
//	for (i = 0; i < sz; i++)
//	{
//		int j = 0;
//		for (j = 0; j < sz; j++)
//		{
//			if (arr[i][j] == num)
//			{
//				printf("%d行 %d列", i+1, j+1);
//				n = 1;  
//				break;
//			}
//		}
//		if (n == 1) 
//		{
//			break;
//		}
//	}
//	if (n == 0)
//	{
//		printf("没找到");
//	}
//}
//int main()
//{
//	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
//	int sz = 3;
//	Cheak_arr(arr,sz,8);
//	return 0;
//}


//日本某地发生了一件谋杀案，警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
//以下为4个嫌疑犯的供词:
//A说：不是我。
//B说：是C。
//C说：是D。
//D说：C在胡说
//已知3个人说了真话，1个人说的是假话。
//现在请根据这些信息，写一个程序来确定到底谁是凶手。

//int main()
//{
//	char i = '0';
//	for (i = 'A'; i <= 'D'; i++)
//	{
//		int killer = (i != 'A') + (i == 'C') + (i == 'D') + (i != 'D');
//		if ( killer == 3)
//		{
//			printf("凶手是%c!", i);
//		}
//	}
//	return 0;
//}


//杨辉三角

int main()
{
	int arr[20][20] = {0};
	int i = 0;
	int n = 5;

	for (i = 0; i < n; i++)
	{
		int j = 0;
		for (j = 0; j <= i; j++)
		{
			if (i <= 1) 
			{
				arr[i][j] = 1;
			}
			else 
			{
				if (j != 0 || j != i)
				{
					arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
				}
				else
				{
					arr[i][j] = 1;
				}
				
			}
			printf("%d ", arr[i][j]);
			
		}
		printf("\n");
	}
	return 0;
}
